package org.example.registry;

import org.example.config.RegistryConfig;
import org.example.pojo.ServiceMetaInfo;

import java.util.List;
import java.util.concurrent.ExecutionException;

public interface Registry {
    /**
     * 初始化
     */
    void init(RegistryConfig registryConfig);

    /**
     * 注册服务
     */
    void register(ServiceMetaInfo serviceMetaInfo) throws ExecutionException, InterruptedException;
    /**
     * 注销服务
     */
    void unRegister(ServiceMetaInfo serviceMetaInfo);
    /**
     * 服务发现（获取某服务的所有节点）
     */
    List<ServiceMetaInfo> serviceDiscovery(String serviceKey);
    /**
     * 服务销毁
     */
    void destroy();
    /**
     * 心跳检测服务
     */
    void heartBeat();
    /**
     * 监听 服务
     */
    void watch(String serviceNodeKey);
}
